package com.gary.security.repository;

import java.util.List;

import com.gary.core.repository.BaseRepository;
import com.gary.security.model.MenuInfo;


public interface MenuRepository extends BaseRepository<MenuInfo> {
    /**
     * 如果数据库中不存在指定name的记录，就将此条记录插入数据库，并返回对应的实体类.
     * 如果数据库中已经存在指定name的记录，就返回对应的实体类
     *
     * @param name 数据字典的name
     * @return T 返回对应的实体类
     */
    public MenuInfo createOrGet(String name);

    /**
     * 读取顶端的队列.
     *
     * @return List.
     */
    public List<MenuInfo> loadTops();
    /**
     * 读取顶级树节点.
     *
     * @param columnName 列名
     * @param sort asc/desc
     * @return List
     */
    public List<MenuInfo> loadTops(String columnName, String sort);

    /**
     * 读取用户可见的菜单.
     *
     * @param userId 用户id
     * @return menu id list
     */
    public List<Long> loadUserMenus(Long userId);

}
